Computing devices, such as wireless-based telecommunication devices, have evolved from point-to-point to all-in-one devices with multiple characteristics, including such things as device settings, networking, voice and video calls, multi-media acquisition/messaging/playback, data storage, and the like. For example, cell phone operability has evolved so much from the humble call-only phones that the term ‘smart-phone’ is utilized to describe an entire developing class of these all-in-one devices.
Yet, with the increase of device characteristics, the complexity of supporting software has also increased. That is, each all-in-one device employs one or more unique software components to perform operations particular to a characteristic. In turn, an assortment of separate software components (e.g., backend components, such as clients, device drivers, and application programmable interfaces, and frontend components, such as user experience, diagnostic, and analytic applications) have been collected and combined to support the multiple device characteristics, resulting in software fragmentation.
Software fragmentation is an inconsistent combination of software and hardware (e.g., assortment of separate software components) that creates an inconsistent software ecosystem. Inconsistent software ecosystems intrinsically include communication problems between the software components due to varying code-standards and possess security risks due to software component integration flaws. Further, inconsistent software ecosystem may also limit scalability since any increase in the number unique software components may equate to an increase of communication and security problems.
Thus, the increase of device operability has resulted in a trend of software fragmentation that has increased the storage footprint and resource utilization within the all-in-one devices while decreasing software flexibility, security, and scalability.